﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace StandAlone
{
    public partial class frm_Clientes : Form
    {
        public frm_Clientes()
        {
            InitializeComponent();
        }

        private void frm_Clientes_Load(object sender, EventArgs e)
        {
            Cargar_Clientes();
        }

        private void cmb_Clientes_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmb_Clientes.SelectedIndex != -1)
            {
                ChequearJuridica();
                CargarEnTextBoxs();
            }

        }

        private void ChequearJuridica()
        {
            if (chkb_Juridica.Checked == true)
            {
                txt_Apellido.Enabled = false;
                txt_Apellido.BackColor = Color.Silver;
                txt_Dni.Enabled = false;
                txt_Dni.BackColor = Color.Silver;
            }
            else
            {
                txt_Apellido.Enabled = true;
                txt_Apellido.BackColor = Color.White;
                txt_Dni.Enabled = true;
                txt_Dni.BackColor = Color.White;
            }
        }
        private void CargarEnTextBoxs()
        {
            DataSet ds = new DataSet();
            string Id_Cliente = cmb_Clientes.SelectedValue.ToString();

            string Consulta = "SELECT Id_Cliente as Id, Juridica as Juridica, Nombre as Nombre, Apellido as Apellido,"
                            + "Email as Email, Contacto as Contacto, Direccion as Direccion, Localidad as Localidad,"
                            + "DNI as DNI, CUIT as CUIT, Telefono as Telefono, Fax as Fax, Celular as Celular,"
                            + "Nota as Nota, Eliminado as Eliminado"
                            + " FROM Clientes WHERE Id_Cliente = '" +
                    Id_Cliente + "'";

            ds = Funciones.Read_DataBase(Consulta);

            txt_Id.Text = ds.Tables[0].Rows[0]["Id"].ToString();
            txt_Nombre.Text = ds.Tables[0].Rows[0]["Nombre"].ToString();
            txt_Apellido.Text = ds.Tables[0].Rows[0]["Apellido"].ToString();
            txt_Celular.Text = ds.Tables[0].Rows[0]["Celular"].ToString();
            txt_Contacto.Text = ds.Tables[0].Rows[0]["Contacto"].ToString();
            txt_Cuit.Text = ds.Tables[0].Rows[0]["CUIT"].ToString();
            txt_Dni.Text = ds.Tables[0].Rows[0]["DNI"].ToString();
            txt_Direccion.Text = ds.Tables[0].Rows[0]["Direccion"].ToString();
            txt_Telefono.Text = ds.Tables[0].Rows[0]["Telefono"].ToString();
            txt_Email.Text = ds.Tables[0].Rows[0]["Email"].ToString();
            txt_Fax.Text = ds.Tables[0].Rows[0]["Fax"].ToString();
            txt_Nota.Text = ds.Tables[0].Rows[0]["Nota"].ToString();
            txt_Localidad.Text = ds.Tables[0].Rows[0]["Localidad"].ToString();

            if (ds.Tables[0].Rows[0]["Eliminado"].ToString() == "True")
                chkb_Eliminado.Checked = true;
            else
                chkb_Eliminado.Checked = false;

            if (ds.Tables[0].Rows[0]["Juridica"].ToString() == "True")
                chkb_Juridica.Checked = true;
            else
                chkb_Juridica.Checked = false;
        }

        private void btn_Agregar_Nuevo_Cliente_Click(object sender, EventArgs e)
        {
            cmb_Clientes.SelectedIndex = -1;
            cmb_Clientes.Enabled = false;
            btn_Agregar_Nuevo_Cliente.Enabled = false;
            chkb_Juridica.Enabled = true;
            Cargar_Cod_Cliente_Nuevo();
            Limpiar_Formulario();
        }


        private void Cargar_Cod_Cliente_Nuevo()
        {
            string Cod_Cliente;
            int Cod_Cliente_Numerico;
            DataSet ds = new DataSet();
            ds = Funciones.Read_DataBase("SELECT MAX(Id_Cliente) as Id_Cliente FROM Clientes");
            Cod_Cliente = ds.Tables[0].Rows[0]["Id_Cliente"].ToString().Trim();
            Cod_Cliente = Cod_Cliente.Remove(0, 1);
            Cod_Cliente_Numerico = Convert.ToInt32(Cod_Cliente.Trim());
            Cod_Cliente_Numerico++;
            Cod_Cliente = Cod_Cliente_Numerico.ToString().PadLeft(4, '0');
            txt_Id.Text = 'C' + Cod_Cliente;
        }

        private void chkb_Juridica_CheckedChanged(object sender, EventArgs e)
        {
            if (chkb_Juridica.Checked == true)
            {
                txt_Apellido.Text = "";
                txt_Apellido.Enabled = false;
                txt_Apellido.BackColor = Color.Silver;
                txt_Dni.Text = "";
                txt_Dni.Enabled = false;
                txt_Dni.BackColor = Color.Silver;
            }
            else
            {
                txt_Apellido.Enabled = true;
                txt_Apellido.BackColor = Color.White;
                txt_Dni.Enabled = true;
                txt_Dni.BackColor = Color.White;
            }
        }

        private void Limpiar_Formulario()
        {
            chkb_Juridica.Checked = false;
            chkb_Eliminado.Checked = false;
            txt_Apellido.Text = "";
            txt_Celular.Text = "";
            txt_Contacto.Text = "";
            txt_Cuit.Text = "";
            txt_Direccion.Text = "";
            txt_Dni.Text = "";
            txt_Email.Text = "";
            txt_Fax.Text = "";
            txt_Localidad.Text = "";
            txt_Nombre.Text = "";
            txt_Nota.Text = "";
            txt_Telefono.Text = "";
        }

        private void btn_Actualizar_Cambios_Click(object sender, EventArgs e)
        {
            if (Validar_Campos() == true)
            {
                if (Buscar_Si_Existe_Cliente() == false)
                {
                    // NO EXISTE COD CLIENTE, SE CARGA NUEVO REGISTRO
                    Agregar_Registro();
                    MessageBox.Show("Cliente Agregado con Éxito", "Agregar Nuevo Cliente", MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                    Limpiar_Formulario();
                    cmb_Clientes.Enabled = true;
                    cmb_Clientes.SelectedIndex = -1;
                    btn_Agregar_Nuevo_Cliente.Enabled = true;
                    Cargar_Clientes();
                }
                else
                {
                    // EXISTE COD CLIENTE, SE ACTUALIZA REGISTRO
                    Actualizar_Registro();
                    MessageBox.Show("Cliente Actualizado con Éxito", "Actualizar Cliente", MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                    Limpiar_Formulario();
                    cmb_Clientes.SelectedIndex = -1;
                    Cargar_Clientes();
                }
                chkb_Juridica.Enabled = false;
            }
        }

        private bool Buscar_Si_Existe_Cliente()
        {
            DataSet ds = new DataSet();
            ds = Funciones.Read_DataBase("SELECT Count (Id_Cliente) AS Cantidad_Clientes FROM Clientes" 
                        + " WHERE Clientes.Id_Cliente = '" + txt_Id.Text + "'");
            if (Convert.ToInt32(ds.Tables[0].Rows[0]["Cantidad_Clientes"].ToString().Trim()) == 0)
                return false;
            else
                return true;
        }

        private void Agregar_Registro()
        {
            DataSet ds = new DataSet();
            ds = Funciones.Read_DataBase("INSERT INTO Clientes (Id_Cliente, Juridica, Nombre, Apellido,"
                    + " Email, Contacto, Direccion, Localidad, DNI, CUIT, Telefono, Fax, Celular, Nota, Eliminado)"
                    + " SELECT '" + txt_Id.Text.Trim() + "'," + Convert.ToInt32(chkb_Juridica.Checked) + ",'" 
                    + txt_Nombre.Text.Trim() + "','" + txt_Apellido.Text.Trim() + "','" + txt_Email.Text.Trim() 
                    + "','" + txt_Contacto.Text.Trim() + "','" + txt_Direccion.Text.Trim() + "','" + txt_Localidad.Text.Trim() 
                    + "','" + txt_Dni.Text.Trim() + "','" + txt_Cuit.Text.Trim() + "','" + txt_Telefono.Text.Trim() + "','" 
                    + txt_Fax.Text.Trim() + "','" + txt_Celular.Text.Trim() + "','" + txt_Nota.Text.Trim() + "'," 
                    + Convert.ToInt32(chkb_Eliminado.Checked));
        }

        private void Actualizar_Registro()
        {
            DataSet ds = new DataSet();
            ds = Funciones.Read_DataBase("UPDATE Clientes SET Id_Cliente ='" + txt_Id.Text.Trim() + "', Juridica=" 
                    + Convert.ToInt32(chkb_Juridica.Checked) + ", Nombre='" + txt_Nombre.Text.Trim() + "', Apellido='" 
                    + txt_Apellido.Text.Trim() + "', Email='" + txt_Email.Text.Trim() + "', Contacto='" + txt_Contacto.Text.Trim() 
                    + "', Direccion='" + txt_Direccion.Text.Trim() + "', Localidad='" + txt_Localidad.Text.Trim() + "', DNI='" 
                    + txt_Dni.Text.Trim() + "', CUIT='" + txt_Cuit.Text.Trim() + "', Telefono='" + txt_Telefono.Text.Trim() 
                    + "', Fax='" + txt_Fax.Text.Trim() + "', Celular='" + txt_Celular.Text.Trim() + "', Nota='" 
                    + txt_Nota.Text.Trim() + "', Eliminado=" + Convert.ToInt32(chkb_Eliminado.Checked) + "WHERE Id_Cliente ='" 
                    + txt_Id.Text.Trim() + "'");
        }

        private void Cargar_Clientes()
        {
            Funciones.Cargar_Combo("SELECT Id_Cliente,(Nombre + ' ' + Apellido) AS Nombre_Completo FROM Clientes"
                , "Id_Cliente", "Nombre_Completo", ref cmb_Clientes);
        }

        private bool Validar_Campos()
        {
            //Devuelve true si se Ingreso un Nombre.
            if (txt_Nombre.Text.Trim() == "")
            {
                MessageBox.Show("No ingresó Nombre", "Error", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        private void btn_Cancelar_Click(object sender, EventArgs e)
        {
            cmb_Clientes.Enabled = true;
            btn_Agregar_Nuevo_Cliente.Enabled = true;
            cmb_Clientes.SelectedIndex = 0;
            chkb_Juridica.Enabled = false;
        }

        private void btn_Cerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}